79662024-01-12 09:18:39ZsBalazsRendezéscpp17Hibás válasz 7/40116ms10152 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    
    vector<int> szamok;
    
    for (int i = 0; n > i; i++) {
        int temp;
        cin >> temp;
        
        szamok.push_back(temp);
    }
    
    vector<pair<int, int>> inter;
    
    for (int i = 0; m > i; i++) {
        int a, b;
        cin >> a >> b;
        
        a--;
        b--;
        
        inter.push_back({a, b});
    }
    
    sort(inter.begin(), inter.end());
    
    vector<pair<int, int>> realInter;
    
    int currentStart = -1;
    int currentEnd = -1;
    
    for (int i = 0; m > i; i++) {
        pair<int, int> current = inter[i];
        
        if (currentStart == -1) {
            currentStart = current.first;
            currentEnd = current.second;
        } else if (currentEnd >= current.first) {
            // Ez egybeesik
            currentEnd = current.second;
        } else {
            realInter.push_back({currentStart, currentEnd});
            
            currentStart = current.first;
            currentEnd = current.second;
        }
    }
    
    if (currentStart != -1) {
        realInter.push_back({currentStart, currentEnd});
    }
    
    int megoldas = 0;
    
    for (auto curr : realInter) {
        int start = curr.first;
        int end = curr.second;
        
        vector<int> subInter;
        
        for (int i = start; end >= i; i++) {
            subInter.push_back(szamok[i]);
        }
        
        sort(subInter.begin(), subInter.end());
        
        for (int i = 0; subInter.size() > i; i++) {
            if (subInter[i] == start+i+1) {
                megoldas++;
            }
        }
    }
    
    int lastIndex = 0;
    for (auto curr : realInter) {
        for (int i = lastIndex; n > i && curr.first > i; i++) {
            if (i+1 == szamok[i]) {
                megoldas++;
            }
        }
        
        lastIndex = curr.second+1;
    }
    
    cout << megoldas << endl;
    
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base7/40
1Elfogadva0/03ms1808 KiB
2Hibás válasz0/017ms2964 KiB
3Elfogadva2/23ms2424 KiB
4Hibás válasz0/23ms2516 KiB
5Hibás válasz0/23ms2648 KiB
6Hibás válasz0/23ms2868 KiB
7Hibás válasz0/23ms3100 KiB
8Hibás válasz0/23ms3196 KiB
9Hibás válasz0/23ms3200 KiB
10Hibás válasz0/24ms3228 KiB
11Hibás válasz0/2116ms9188 KiB
12Elfogadva2/2115ms9772 KiB
13Elfogadva2/2115ms10008 KiB
14Elfogadva1/1115ms10152 KiB
15Hibás válasz0/2116ms10120 KiB
16Hibás válasz0/2112ms8776 KiB
17Hibás válasz0/2112ms8636 KiB
18Hibás válasz0/2112ms8836 KiB
19Hibás válasz0/2115ms9044 KiB
20Hibás válasz0/1112ms9076 KiB
21Hibás válasz0/2112ms8868 KiB
22Hibás válasz0/2112ms8992 KiB
23Hibás válasz0/2114ms8856 KiB