#include <iostream> #include <vector> #include <stdio.h> using namespace std; int main() { //chrono::high_resolution_clock::time_point t1 = chrono::high_resolution_clock::now(); ios_base::sync_with_stdio(false); // wylaczamy synchronizacje strumieni (patrz ponizej) cin.tie(0); int iloscFarb, iloscOperacji; int lFarby, pFarby, kolor; //cin >> iloscFarb; //cin >> iloscOperacji; fscanf(stdin, "%d %d\n", &iloscFarb, &iloscOperacji); vector <int> zoltyIndeks(iloscFarb, 0); vector <int> niebieskiIndeks(iloscFarb, 0); vector <int> czerwonyIndeks(iloscFarb, 0); vector <int> zolty(iloscFarb, 0); vector <int> niebieski(iloscFarb, 0); vector <int> czerwony(iloscFarb, 0); for (int i = 0; i < iloscOperacji; i++) { fscanf(stdin, "%d %d %d\n", &lFarby, &pFarby, &kolor); //cin >> lFarby >> pFarby >> kolor; if (kolor == 1) { if (lFarby == pFarby) zolty[lFarby - 1] = 1; else { zoltyIndeks[lFarby - 1]++; zoltyIndeks[pFarby - 1]--; } } else if (kolor == 2) { if (lFarby == pFarby) niebieski[lFarby - 1] = 1; else { niebieskiIndeks[lFarby - 1]++; niebieskiIndeks[pFarby - 1]--; } } else { if (lFarby == pFarby) czerwony[lFarby - 1] = 1; else { czerwonyIndeks[lFarby - 1]++; czerwonyIndeks[pFarby - 1]--; } } }; int kolorZolty = 0; int kolorNiebieski = 0; int kolorCzerwony = 0; int iloscZielonych = 0; for (int i = 0; i < iloscFarb; i++) { kolorZolty += zoltyIndeks[i]; kolorNiebieski += niebieskiIndeks[i]; kolorCzerwony += czerwonyIndeks[i]; if (kolorZolty > 0 || zoltyIndeks[i] < 0) zolty[i] = 1; if (kolorNiebieski > 0 || niebieskiIndeks[i] < 0) niebieski[i] = 1; if (kolorCzerwony > 0 || czerwonyIndeks[i] < 0) czerwony[i] = 1; if (zolty[i] == 1 && niebieski[i] == 1 && !czerwony[i]) iloscZielonych++; }; cout << iloscZielonych; // Some computation here //chrono::high_resolution_clock::time_point t2 = chrono::high_resolution_clock::now(); //chrono::duration<double> time_span = chrono::duration_cast<chrono::duration<double>>(t2 - t1); //cout << "\nIt took me " << time_span.count() << " seconds."; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | #include <iostream> #include <vector> #include <stdio.h> using namespace std; int main() { //chrono::high_resolution_clock::time_point t1 = chrono::high_resolution_clock::now(); ios_base::sync_with_stdio(false); // wylaczamy synchronizacje strumieni (patrz ponizej) cin.tie(0); int iloscFarb, iloscOperacji; int lFarby, pFarby, kolor; //cin >> iloscFarb; //cin >> iloscOperacji; fscanf(stdin, "%d %d\n", &iloscFarb, &iloscOperacji); vector <int> zoltyIndeks(iloscFarb, 0); vector <int> niebieskiIndeks(iloscFarb, 0); vector <int> czerwonyIndeks(iloscFarb, 0); vector <int> zolty(iloscFarb, 0); vector <int> niebieski(iloscFarb, 0); vector <int> czerwony(iloscFarb, 0); for (int i = 0; i < iloscOperacji; i++) { fscanf(stdin, "%d %d %d\n", &lFarby, &pFarby, &kolor); //cin >> lFarby >> pFarby >> kolor; if (kolor == 1) { if (lFarby == pFarby) zolty[lFarby - 1] = 1; else { zoltyIndeks[lFarby - 1]++; zoltyIndeks[pFarby - 1]--; } } else if (kolor == 2) { if (lFarby == pFarby) niebieski[lFarby - 1] = 1; else { niebieskiIndeks[lFarby - 1]++; niebieskiIndeks[pFarby - 1]--; } } else { if (lFarby == pFarby) czerwony[lFarby - 1] = 1; else { czerwonyIndeks[lFarby - 1]++; czerwonyIndeks[pFarby - 1]--; } } }; int kolorZolty = 0; int kolorNiebieski = 0; int kolorCzerwony = 0; int iloscZielonych = 0; for (int i = 0; i < iloscFarb; i++) { kolorZolty += zoltyIndeks[i]; kolorNiebieski += niebieskiIndeks[i]; kolorCzerwony += czerwonyIndeks[i]; if (kolorZolty > 0 || zoltyIndeks[i] < 0) zolty[i] = 1; if (kolorNiebieski > 0 || niebieskiIndeks[i] < 0) niebieski[i] = 1; if (kolorCzerwony > 0 || czerwonyIndeks[i] < 0) czerwony[i] = 1; if (zolty[i] == 1 && niebieski[i] == 1 && !czerwony[i]) iloscZielonych++; }; cout << iloscZielonych; // Some computation here //chrono::high_resolution_clock::time_point t2 = chrono::high_resolution_clock::now(); //chrono::duration<double> time_span = chrono::duration_cast<chrono::duration<double>>(t2 - t1); //cout << "\nIt took me " << time_span.count() << " seconds."; return 0; } |