Submission #592067

#TimeUsernameProblemLanguageResultExecution timeMemory
592067Kacper_ZiemeckiCards (LMIO19_korteles)C++14
0 / 100
1088 ms262144 KiB
#include <bits/stdc++.h> using namespace std; #define endl "\n"; pair<int, vector<int>> binarySearch(vector<pair<string, int>> arr, int l, int r, string x, vector<pair<string, int>> lista) { if (r >= l) { int mid = l + (r - l) / 2; if (arr[mid].first == x){ int res = 0; int odstep = 0; vector<int> listaRes; while(mid - odstep > 0 && mid + odstep < arr.size() - 1){ odstep++; if(arr[mid - odstep].first == x && lista[arr[mid - odstep].second].second != -2){ res++; listaRes.push_back(arr[mid - odstep].second); //cout << arr[mid - odstep].first << " = " << x << endl; } if(arr[mid + odstep].first == x && lista[arr[mid + odstep].second].second != -2){ res++; listaRes.push_back(arr[mid + odstep].second); //cout << arr[mid + odstep].first << " = " << x << endl; } else if(arr[mid - odstep].first != x && arr[mid - odstep].first != x) break; } if(lista[arr[mid].second].second != -2){ //cout << arr[mid].first << " = " << x << endl; listaRes.push_back(arr[mid].second); res++; } return {res, listaRes}; } if (arr[mid].first[0] > x[0] || arr[mid].first[1] > x[1]){ return binarySearch(arr, l, mid - 1, x, lista); } return binarySearch(arr, mid + 1, r, x, lista); } return {0, {}}; } void solve(){ int n, res = 0; string jeden, dwa; cin >> n; vector<pair<string, int>> lista(n, {"", 0}); for(int i = 0; i < n; i++){ cin >> jeden >> dwa; lista[i].first += jeden + dwa; } vector<pair<string, int>> gora, dol, prawo, lewo; int i = 0; for(auto napis : lista){ string uGury(1, napis.first[0]); uGury += napis.first[1]; gora.push_back({uGury,i}); string uDole(1, napis.first[2]); uDole += napis.first[3]; dol.push_back({uDole,i}); string uPrawo(1, napis.first[1]); uPrawo += napis.first[3]; prawo.push_back({uPrawo,i}); string uLewo(1, napis.first[0]); uLewo += napis.first[2]; lewo.push_back({uLewo,i}); i++; } sort(dol.begin(), dol.end()); sort(lewo.begin(), lewo.end()); //for(auto el : dol) cout << el.second << " -> " << el.first << endl; pair<int, vector<int>> dodatek; for(auto &el : gora){ lista[el.second].second = -2; dodatek = binarySearch(dol, 0, n / 2, el.first, lista); res += dodatek.first; if(dodatek.first){ for(auto indeks : dodatek.second){ lista[indeks].second = -1; } } } for(auto &el : prawo){ if(lista[el.second].second == 0){ dodatek = binarySearch(lewo, 0, n / 2, el.first, lista); res += dodatek.first; } } cout << res << endl; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen("input.txt", "r", stdin); solve(); }

Compilation message (stderr)

korteles.cpp: In function 'std::pair<int, std::vector<int> > binarySearch(std::vector<std::pair<std::__cxx11::basic_string<char>, int> >, int, int, std::string, std::vector<std::pair<std::__cxx11::basic_string<char>, int> >)':
korteles.cpp:13:49: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<std::__cxx11::basic_string<char>, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   13 |          while(mid - odstep > 0 && mid + odstep < arr.size() - 1){
      |                                    ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...