| Task: | Apartments |
| Sender: | hundlij1 |
| Submission time: | 2025-09-06 23:42:49 +0300 |
| Language: | C++ (C++11) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | details |
| #2 | ACCEPTED | 0.00 s | details |
| #3 | ACCEPTED | 0.00 s | details |
| #4 | ACCEPTED | 0.00 s | details |
| #5 | ACCEPTED | 0.10 s | details |
| #6 | ACCEPTED | 0.10 s | details |
| #7 | ACCEPTED | 0.10 s | details |
| #8 | ACCEPTED | 0.10 s | details |
| #9 | ACCEPTED | 0.00 s | details |
| #10 | ACCEPTED | 0.00 s | details |
| #11 | ACCEPTED | 0.00 s | details |
| #12 | ACCEPTED | 0.00 s | details |
| #13 | ACCEPTED | 0.22 s | details |
| #14 | ACCEPTED | 0.22 s | details |
| #15 | ACCEPTED | 0.22 s | details |
| #16 | ACCEPTED | 0.22 s | details |
| #17 | ACCEPTED | 0.08 s | details |
| #18 | ACCEPTED | 0.00 s | details |
| #19 | ACCEPTED | 0.00 s | details |
Code
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
void task1(){
int n, m;
cin >> n >> m;
vector<vector<int>> adj(n+1);
vector<int> addNodes;
for(int i = 0; i < m; i++) {
int a, b;
cin >> a >> b;
adj[a].push_back(b);
adj[b].push_back(a);
}
bool allfound = false;
vector<bool> visited(n+1, false);
int start = 1;
while(!allfound) {
queue<int> q;
visited[start] = true;
q.push(start);
while (!q.empty()) {
int s = q.front(); q.pop();
for (auto u : adj[s]) {
if (visited[u]) continue;
visited[u] = true;
q.push(u);
}
}
allfound = true;
for(int i = start; i <= n; i++) {
if(!visited[i]) {
addNodes.push_back(i);
allfound = false;
start = i;
break;
}
}
/*for( int i = 1; i <= n; i++) {
cout << i << ": " << visited[i] <<endl;
}*/
}
cout << addNodes.size() << endl;
for(size_t i = 0; i < addNodes.size(); i++) {
cout << addNodes[i] << " " << 1 << endl;
}
return;
}
void task2(){
int n, m,k;
cin >> n >> m >> k;
vector<int> des(n, 0);
vector<int> size(m, 0);
for(int i = 0; i < n; i++) {
cin >> des[i];
}
for(int i = 0; i < m; i++) {
cin >> size[i];
}
sort(des.begin(), des.end());
sort(size.begin(), size.end());
int pointerM = 0;
int pointerN = 0;
int count = 0;
for(int i = 0; i < m+n; i++) {
if(pointerM >= m || pointerN >= n) break;
if((des[pointerN] + k) >= size[pointerM] && (des[pointerN] - k ) <= size[pointerM]) {
pointerM++;
pointerN++;
++count;
//cout << "Match: " << des[pointerN-1] << " " << size[pointerM-1] << endl;
}
else if((des[pointerN] + k) < size[pointerM]) {
pointerN++;
//cout << "NoMatch: " << des[pointerN-1] << " " << size[pointerM] << endl;
}
else if((des[pointerN] - k) > size[pointerM]) {
pointerM++;
//cout << "NoMatch: " << des[pointerN] << " " << size[pointerM-1] << endl;
}
else{
//cout << "test" << endl;
}
}
cout << count << endl;
return;
}
int main() {
task2();
return 0;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 10 10 0 37 62 56 69 34 46 10 86 16 49 50 95 47 43 9 62 83 71 71 7 |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 10 10 10 90 41 20 39 49 21 35 31 74 86 14 24 24 7 82 85 82 4 60 95 |
| correct output |
|---|
| 6 |
| user output |
|---|
| 6 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 10 10 1000 59 5 65 15 42 81 58 96 50 1 18 59 71 65 97 83 80 68 92 67 |
| correct output |
|---|
| 10 |
| user output |
|---|
| 10 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 10 10 1000000000 25 80 59 43 67 21 77 5 8 99 66 41 62 24 88 55 1 53 50 60 |
| correct output |
|---|
| 10 |
| user output |
|---|
| 10 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 0 34 48 12 99 89 71 20 7 9 38 58... |
| correct output |
|---|
| 197286 |
| user output |
|---|
| 197286 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 10 89 26 46 74 91 19 47 18 83 85 ... |
| correct output |
|---|
| 200000 |
| user output |
|---|
| 200000 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 1000 71 84 11 90 70 59 60 11 52 65 ... |
| correct output |
|---|
| 200000 |
| user output |
|---|
| 200000 |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 1000000000 21 94 92 4 12 5 38 47 59 92 2 ... |
| correct output |
|---|
| 200000 |
| user output |
|---|
| 200000 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 10 10 0 727245017 647121519 549745115 ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 10 10 10 30734435 218114477 257355293 4... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 10 10 1000 7899629 162004163 327616450 51... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 10 10 1000000000 725746771 537157640 742868604 ... |
| correct output |
|---|
| 10 |
| user output |
|---|
| 10 |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 0 375495587 322263536 985991668 ... |
| correct output |
|---|
| 42 |
| user output |
|---|
| 42 |
Test 14
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 10 906603621 968136956 666786366 ... |
| correct output |
|---|
| 846 |
| user output |
|---|
| 846 |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 1000 215460174 880023362 242442952 ... |
| correct output |
|---|
| 57149 |
| user output |
|---|
| 57149 |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 1000000000 50349580 773460492 440699400 8... |
| correct output |
|---|
| 200000 |
| user output |
|---|
| 200000 |
Test 17
Verdict: ACCEPTED
| input |
|---|
| 199999 1 1 199996 199997 149999 117797 19... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 18
Verdict: ACCEPTED
| input |
|---|
| 5 2 2 2 2 2 40 50 40 50 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 19
Verdict: ACCEPTED
| input |
|---|
| 4 3 5 60 45 80 60 30 60 75 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
